package cn.kuporo.seckill.goods.domain.model.vo;

import jakarta.validation.constraints.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @author: kuporo
 * @since: 2025/7/9
 * @description:
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GoodsSaveReqVO implements Serializable {
    /**
     * 商品名称
     */
    @NotBlank(message = "商品名称不能为空")
    private String goodsName;

    /**
     * 秒杀活动id
     */
    @NotNull(message = "活动id不能为空")
    private Long activityId;

    /**
     * 商品原价
     */
    @NotNull(message = "商品原价不能为空")
    @Positive(message = "商品原价必须是正数")
    @Digits(integer = 10, fraction = 2, message = "商品原价格式不正确")
    private BigDecimal originalPrice;

    /**
     * 秒杀活动价格
     */
    @NotNull(message = "商品活动价格不能为空")
    @Positive(message = "商品活动价必须是正数")
    @Digits(integer = 10, fraction = 2, message = "商品活动价格式不正确")
    private BigDecimal activityPrice;

    /**
     * 初始库存
     */
    @NotNull(message = "商品初始库不能为空")
    @Positive(message = "商品初始库存必须大于0")
    private Integer initialStock;

    /**
     * 限购个数
     */
    @NotNull(message = "商品限购个数不能为空")
    @Positive(message = "商品限购个数必须大于0")
    private Integer limitNum;

    /**
     * 描述
     */
    private String description;

    /**
     * 图片
     */
    private String imgUrl;

    /**
     * 版本号，默认为1，传递的是活动的版本号
     */
    private Long version = 1L;
}
